Page({
  data: {
    // ...省略其他data属性...
  },

  onLoad() {
    // 测试添加子设备逻辑
    this.testAddChildDevice();
  },

  // 生成模拟的productID和sasToken
  generateRandomValues() {
    // 产品ID可以是符合项目命名规范的随机字符串，这里简化处理
    const productID = Math.random().toString(36).substring(2, 10).toUpperCase();

    // SasToken应更复杂且安全，这里仅作为示意，实际应用需安全生成
    const sasToken = Array(32).fill().map(() => Math.random().toString(36).charAt(2)).join('');

    return { productID, sasToken };
  },

  // 添加子设备的函数
  addChildDevice(deviceName, callback) {
    const { productID, sasToken } = this.generateRandomValues(); // 使用生成的随机值
    const url = `/proxy/device/thing/topo/add?topic=$sys/5RRfWDSPQr/lora_0/thing/sub/topo/add&protocol=mqtt`;
    const data = {
      id: '123',
      version: '1.0',
      params: {
        deviceName: 'lora_child_0', // 这里原本是 'lora_0'，如果意在使用传入的deviceName，请修正
        productID,
        sasToken
      }
    };

    wx.request({
      url,
      method: 'POST',
      data: JSON.stringify(data),
      header: {'content-type': 'application/json'},
      success: (res) => {
        if (res.statusCode === 200) {
          callback && callback(null, res.data);
        } else {
          callback(`请求失败，状态码：${res.statusCode}`);
        }
      },
      fail: (err) => {
        callback(`网络请求失败: ${err.errMsg}`);
      },
    });
  },

  // 测试添加子设备
  testAddChildDevice() {
    this.addChildDevice("childDevice1", (err, response) => {
      if (!err) {
        if (response.errno === 0) {
          wx.showToast({
            title: '子设备添加成功',
            icon: 'success',
          });
          // 这里可以添加更多测试逻辑，例如检查子设备是否出现在列表中
        } else {
          wx.showToast({
            title: '添加子设备失败，后台错误',
            icon: 'none',
          });
        }
      } else {
        wx.showToast({
          title: err,
          icon: 'none',
        });
      }
    });
  }
});